import { getUserDetailByIdApi, getUserInfoApi, loginApi } from '@/api/user'
// import Cookies from 'js-cookie'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'
const state = {
  // 从本地储存中获取
  // token: localStorage.getItem('token') || ''

  // 从Cookies中获取
  token: getToken() || '',
  userInfo: {}
}
const mutations = {
  setToken(state, data) {
    // 存储到本地
    // localStorage.setItem('token', data)

    state.token = data
    // 存储到Cookies
    setToken(data)
  },
  setUserInfo(state, data) {
    state.userInfo = data
  },
  // 移除token
  removeToken(state) {
    removeToken(state.token)
    state.token = ''
    // 移除保存的页码
    localStorage.removeItem('currentPage')
  },
  // 初始化userInfo
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // es6写法
  // login: (store, data) => {
  //   loginApi(data).then((res) => {
  //     console.log(res)
  //     store.commit('setToken', res.data.data)
  //   })
  // }

  // es5写法
  // login(store, data) {
  //   loginApi(data).then((res) => {
  //     console.log(res)
  //     store.commit('setToken', res.data.data)
  //   })
  // }

  // 登录
  async login(store, data) {
    // .then的方法不会返回promise

    // loginApi(data).then((res) => {
    //   console.log(res)
    //   store.commit('setToken', res.data.data)
    // })
    const res = await loginApi(data)
    // console.log(res)
    // console.log(res.data.data)
    store.commit('setToken', res)
    // Cookies.set('token', res.data.data)
    return res
  },

  async getUserInfo(store, data) {
    // 获取用户基本信息
    const res = await getUserInfoApi()
    // console.log('-----', res)

    // 获取员工详情
    const userDetail = await getUserDetailByIdApi(res.userId)
    store.commit('setUserInfo', {
      ...res,
      ...userDetail
    })

    // console.log('staffPhoto', staffPhoto)
  },
  // 退出登录
  logout(store) {
    store.commit('removeToken')
    store.commit('removeUserInfo')

    // 重置路由
    resetRouter()
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
